package com.wltt.product.frfront.service.base;

import com.wltt.product.frfront.mapper.base.BaseMapper;

import java.io.Serializable;
import java.util.List;


/**
 * @ClassName: BaseServiceImpl
 * @Description: 逻辑服务公共实现类
 * @Date: 2025-07-03 18:01:51
 * @Author yanggl
 */
public class BaseServiceImpl<T, ID extends Serializable> implements BaseService<T, ID> {

    BaseMapper<T, ID> baseMapper;

    //构造方法
    public BaseServiceImpl(BaseMapper<T, ID> baseMapper) {
        this.baseMapper = baseMapper;
    }

    /**
     * 可选插入返回主键
     *
     * @param entity
     * @return
     */
    @Override
    public ID insertSelective(T entity) {
        return baseMapper.insertSelective(entity);
    }

    /**
     * 批量插入
     *
     * @param records
     */
    @Override
    public void insertRecords(List<T> records) {
        baseMapper.insertRecords(records);
    }

    /**
     * 条件查询返回匹配的第一条记录
     *
     * @param entity
     * @return
     */
    @Override
    public T queryLimitOne(T entity) {
        return baseMapper.queryLimitOne(entity);
    }

    /**
     * 条件查询
     *
     * @param entity
     * @return
     */
    @Override
    public List<T> queryByCond(T entity) {
        return baseMapper.queryByCond(entity);
    }

    /**
     * 主键查询 可能返回Null
     *
     * @param id
     * @return
     */
    @Override
    public T queryById(ID id) {
        return baseMapper.queryById(id);
    }

    /**
     * 主键批量查询 可能返回空列表
     *
     * @param ids
     * @return
     */
    @Override
    public List<T> queryByIds(List<ID> ids) {
        return baseMapper.queryByIds(ids);
    }

    /**
     * 主键更新
     *
     * @param entity
     * @return
     */
    @Override
    public boolean updateById(T entity) {
        return baseMapper.updateById(entity) > 0;
    }

    /**
     * 主键删除
     *
     * @param id
     * @return
     */
    @Override
    public boolean deleteById(ID id) {
        return baseMapper.deleteById(id) > 0;
    }

    /**
     * 主键批量删除
     *
     * @param ids
     * @return
     */
    @Override
    public boolean deleteByIds(List<ID> ids) {
        return baseMapper.deleteByIds(ids) > 0;
    }
}